WAR (파일 포맷)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
WAR 파일은 웹 애플리케이션을 배포하기 위한 파일 형식으로, JAR 파일과 유사한 구조를 가지며 디지털 서명이 가능하다. WAR 파일은 `/WEB-INF` 디렉토리를 포함하며, 이 디렉토리 안에는 웹 애플리케이션의 구조를 정의하는 `web.xml` 파일이 있다. WAR 파일은 웹 애플리케이션의 테스트 및 배포를 간편하게 하고, 버전 관리를 용이하게 하며, 모든 Java EE 컨테이너에서 지원된다는 장점이 있다. 그러나 소스 코드 변경 시마다 다시 패키징하고 배포해야 하는 번거로움이 단점으로 지적된다.
더 읽어볼만한 페이지
- 아카이브 포맷 - ARJ
ARJ는 다양한 소프트웨어 유틸리티에서 압축 해제가 가능한 파일 포맷으로, macOS에서는 독립 실행형 유틸리티를 통해 압축을 해제할 수 있다. - 아카이브 포맷 - JAR (파일 포맷)
JAR (Java ARchive)는 자바 런타임 환경에서 애플리케이션 배포를 위해 사용되는 ZIP 기반의 파일 포맷으로, 자바 클래스 파일과 매니페스트 파일을 포함하여 메타데이터와 실행 정보를 관리하며, 압축 및 전자 서명을 지원하고 실행 가능한 JAR 파일을 통해 애플리케이션을 간편하게 실행할 수 있게 한다. - 자바 플랫폼, 엔터프라이즈 에디션 - IBM 웹스피어
IBM 웹스피어는 IBM에서 출시한 기업용 소프트웨어 제품군 브랜드로, 다양한 애플리케이션 인프라, 비즈니스 프로세스 통합, 정보 통합 및 개발 도구를 포함한다. - 자바 플랫폼, 엔터프라이즈 에디션 - 자카르타 서버 페이지
자카르타 서버 페이지(JSP)는 웹 애플리케이션 개발에 사용되는 서버 측 스크립팅 기술로, 서블릿으로 변환되어 실행되고 HTML 형태로 결과를 반환하며, 지시어, 스크립틀릿, 표현식, 액션 등의 문법 요소, 표현 언어(EL), JSTL을 통해 동적인 웹 페이지를 구현하고 개발 편의성을 높였다.
WAR (파일 포맷) - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
종류 | 아카이브 |
확장자 | .war |
MIME 형식 | application/java-archive |
매직 넘버 | PK (표준 ZIP 파일) |
개발 | 선 마이크로시스템즈 |
컨테이너 | JSP, Java Servlet |
기반 | JAR |
추가 정보 | |
설명 | 웹 애플리케이션 배포용 아카이브 파일 형식 |
2. 구조 및 내용
WAR 파일은 JAR 파일과 동일한 방식으로 디지털 서명될 수 있다.
WAR 파일 내에는 특수 파일과 디렉토리가 존재한다. `/WEB-INF` 디렉토리에는 웹 애플리케이션의 구조를 정의하는 web.xml 파일이 있다. 웹 애플리케이션이 JSP 파일만 제공하는 경우 `web.xml` 파일은 필수가 아니지만, 서블릿을 사용하는 경우에는 서블릿 컨테이너가 `web.xml` 파일을 이용하여 URL 요청을 서블릿으로 라우팅한다. 또한, `web.xml`은 서블릿에서 참조 가능한 컨텍스트 변수와 배포자가 설정해야 하는 환경 종속성을 정의하는데 사용된다. 예를 들어, 이메일 전송에 사용되는 메일 세션에 대한 종속성을 정의하고, 서블릿 컨테이너가 이 서비스를 제공하도록 할 수 있다.[1]
2. 1. 기본 구조
WAR 파일은 JAR 파일과 동일한 방식으로 디지털 서명될 수 있어 소스 코드의 출처를 확인할 수 있다.WAR 파일 내에는 특수 파일과 디렉토리가 있다.
- `/WEB-INF` 디렉토리에는 웹 애플리케이션의 구조를 정의하는 web.xml 파일이 있다.
- 웹 애플리케이션이 JSP 파일만 제공하는 경우 `web.xml` 파일은 반드시 필요한 것은 아니다.
- 웹 애플리케이션이 서블릿을 사용하는 경우, 서블릿 컨테이너는 `web.xml`을 사용하여 URL 요청이 서블릿으로 라우팅될지를 확인한다.
- `web.xml` 파일은 서블릿 내에서 참조할 수 있는 컨텍스트 변수를 정의하고, 배포자가 설정해야 하는 환경 종속성을 정의하는 데 사용된다.
- 예를 들어 이메일을 보내는 데 사용되는 메일 세션에 대한 종속성이 있으며, 서블릿 컨테이너는 이 서비스를 제공한다.[1]
2. 2. /WEB-INF 디렉토리
WAR 파일의 /WEB-INF 디렉토리에는 웹 애플리케이션의 구조를 정의하는 web.xml 파일이 포함되어 있다. 웹 애플리케이션이 JSP 파일만 제공하는 경우 `web.xml` 파일은 필수적이지 않다. 웹 애플리케이션이 서블릿을 사용하는 경우 서블릿 컨테이너는 `web.xml`을 사용하여 URL 요청을 서블릿에 라우팅한다. `web.xml` 파일은 서블릿 내에서 참조할 수 있는 컨텍스트 변수와 배포자가 설정해야 하는 환경 종속성을 정의하는 데에도 사용된다./WEB-INF/classes 디렉터리는 클래스로더의 클래스패스(classpath)에 있으며, 웹 애플리케이션 실행 시 .class 파일들이 호출되는 곳이다. /WEB-INF/lib 디렉터리에 있는 JAR 파일들은 클래스로더의 클래스패스에 포함될 수 있다.
2. 2. 1. web.xml
`web.xml` 파일은 웹 애플리케이션의 설정을 정의하는 XML 파일이다. 웹 애플리케이션이 서블릿을 사용하는 경우, 서블릿 컨테이너는 `web.xml`을 사용하여 URL 요청이 어떤 서블릿으로 라우팅될지 결정한다. `web.xml`은 서블릿 내에서 참조 가능한 컨텍스트 변수를 정의하고, 배포자가 설정해야 하는 환경 종속성을 정의하는 데에도 사용된다. 예를 들어, 이메일 전송에 사용되는 메일 세션에 대한 종속성을 정의할 수 있다. 서블릿 컨테이너는 이러한 서비스를 제공한다.다음은 서블릿의 선언 및 연결을 보여주는 `web.xml` 파일의 예시이다.
```xml
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
Resource reference to a factory for javax.mail.Session
instances that may be used for sending electronic mail messages,
preconfigured to connect to the appropriate SMTP server.
```
웹 애플리케이션이 JSP 파일만 제공하는 경우에는 `web.xml` 파일이 반드시 필요하지는 않다.
2. 2. 2. /WEB-INF/classes
/WEB-INF/classes 디렉터리는 클래스 로더의 클래스패스에 있다. 이 위치는 .class 파일들(Java 클래스 파일)이 웹 애플리케이션 실행 시 호출되는 곳이다. 웹 애플리케이션에서 사용하는 Java 클래스 파일들이 이 디렉터리에 위치하며, 클래스 로더의 클래스패스에 포함되어 웹 애플리케이션 실행 시 참조된다.2. 2. 3. /WEB-INF/lib
웹 애플리케이션에서 사용하는 라이브러리(JAR 파일)들이 위치하는 디렉터리이다. 클래스 로더의 클래스패스에 포함되어 웹 애플리케이션 실행 시 참조된다.3. 장점
WAR 파일은 웹 애플리케이션 개발 및 배포를 단순화하고 효율성을 높이는 여러 장점을 제공한다. 예를 들어, 테스트 환경과 운영 환경의 설정 파일을 분리하여 개발자가 테스트와 검증을 거친 WAR 파일이 운영 환경에 배포되는 파일과 동일하다는 확신을 가질 수 있게 한다.[1]
3. 1. 간편한 배포 및 테스트
웹 애플리케이션을 하나의 파일로 묶어(패키징) 테스트 및 배포를 간편하게 할 수 있다. 또한 배포된 애플리케이션 버전 식별이 쉽다. 모든 Java EE 컨테이너에서 WAR 파일을 지원하며, MVC 구조는 WAR 파일을 지원한다.[1]운영 환경에서는 배포 전에 충분한 테스트를 거치지 않고 수정 사항을 적용하지 않는다고 가정할 때, WAR 파일은 프로퍼티 파일을 사용하여 환경별 변수를 식별할 때 뚜렷한 이점을 가진다. 예를 들어, 테스트 환경의 LDAP 서버는 `ldaps://testauth.example.com:636`과 같을 수 있고, 운영 환경의 LDAP 서버는 `ldaps://auth.example.com:636`과 같을 수 있다. 외부 프로퍼티 파일은 다음과 같이 링크를 정의한다.[1]
LINKED_PAGE=ldaps://testauth.example.com:636
소스 코드는 프로퍼티 파일을 읽어 대상 LDAP 서버를 결정한다. 이러한 방식으로 개발자는 테스트 및 검증된 WAR 파일이 운영 환경으로 승격되는 파일과 정확히 동일하다는 것을 확신할 수 있다.[1]
3. 2. 버전 관리 용이
WAR 파일은 배포된 애플리케이션의 버전을 쉽게 식별하고 관리할 수 있게 해준다.[1] 이는 프로퍼티 파일을 사용하여 환경별 변수를 식별할 때 특히 유용하다.[1]예를 들어, 테스트 환경의 LDAP 서버 주소는 `ldaps://testauth.example.com:636`이고, 프로덕션 환경의 LDAP 서버 주소는 `ldaps://auth.example.com:636`일 수 있다.[1] 이 경우, 외부 프로퍼티 파일에 다음과 같이 링크를 정의할 수 있다.[1]
`LINKED_PAGE=ldaps://testauth.example.com:636`
소스 코드는 이 프로퍼티 파일을 읽어 대상 LDAP 서버를 결정한다.[1] 이러한 방식을 통해 개발자는 테스트 및 검증된 WAR 파일이 프로덕션 환경으로 배포되는 파일과 정확히 동일하다는 것을 확신할 수 있다.[1]
3. 3. 표준화된 형식
Java EE 컨테이너에서 WAR 파일을 지원하므로 모든 Java EE 환경에서 호환성 문제가 적다.[1]3. 4. MVC 구조 지원
MVC 구조는 WAR 파일을 지원한다.[4] 이를 통해 웹 애플리케이션 개발 생산성을 높일 수 있다.프로덕션 환경에서는 배포 전에 충분한 테스트 없이 수정 사항을 적용하지 않는다고 가정할 때, WAR 파일은 프로퍼티 파일을 사용하여 환경별 변수를 식별할 때 뚜렷한 이점을 갖는다. 예를 들어, 테스트 환경의 LDAP 서버는 `ldaps://testauth.example.com:636`과 같을 수 있고, 프로덕션 환경의 LDAP 서버는 `ldaps://auth.example.com:636`과 같을 수 있다. 외부 프로퍼티 파일은 다음과 같이 링크를 정의한다.
LINKED_PAGE=ldaps://testauth.example.com:636
소스 코드는 프로퍼티 파일을 읽어 대상 LDAP 서버를 결정한다. 이러한 방식으로 개발자는 테스트 및 검증된 WAR 파일이 프로덕션으로 승격되는 파일과 정확히 동일하다는 것을 확신할 수 있다.
3. 5. 환경 설정 분리
프로덕션 환경에서는 배포 전에 충분한 테스트 없이 수정 사항을 적용하지 않는다고 가정할 때, WAR 파일은 프로퍼티 파일을 사용하여 환경별 변수를 식별할 때 뚜렷한 이점을 가진다. 예를 들어, 테스트 환경의 LDAP 서버는 `ldaps://testauth.example.com:636`과 같을 수 있고, 프로덕션 환경의 LDAP 서버는 `ldaps://auth.example.com:636`이다. 외부 프로퍼티 파일은 다음과 같이 링크를 정의한다.LINKED_PAGE=ldaps://testauth.example.com:636
소스 코드는 프로퍼티 파일을 읽어 대상 LDAP 서버를 결정한다. 이러한 방식으로 개발자는 테스트 및 검증된 WAR 파일이 프로덕션으로 승격되는 파일과 정확히 동일하다는 것을 확신할 수 있다.
4. 단점
WAR 파일을 사용한 웹 배포는 소스 코드의 사소한 변경에도 다시 패키징하고 배포해야 하므로 동적 환경에서 불리하다는 의견이 있다.[3]
4. 1. 동적 변경의 어려움
소스 코드의 사소한 변경이라도 WAR 파일을 다시 패키징하고 배포해야 한다.[3] 런타임 배포로 구성된 경우 웹 서버를 중지할 필요는 없지만,[4] 변경 사항을 적용하기 위한 절차가 상대적으로 복잡하다.5. 예제
다음은 `web.xml` 파일을 통해 서블릿을 선언하고 URL과 연결하는 방법을 보여주는 예제이다.
```xml
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
Resource reference to a factory for javax.mail.Session
instances that may be used for sending electronic mail messages,
preconfigured to connect to the appropriate SMTP server.
```
`/WEB-INF/classes` 디렉터리는 클래스로더의 클래스패스에 있다. `.class` 파일들을 이 위치에 두면 웹 애플리케이션 실행 시 호출된다. `/WEB-INF/lib` 디렉터리에 있는 JAR 파일들도 클래스패스에 포함된다.
5. 1. web.xml 예제
다음은 서블릿의 선언 및 연결을 보여주는 ''web.xml'' 파일의 예시이다.PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
Resource reference to a factory for javax.mail.Session
instances that may be used for sending electronic mail messages,
preconfigured to connect to the appropriate SMTP server.
참조
[1]
웹사이트
Apache Tomcat 8 (8.0.44) - Tomcat Web Application Deployment
https://tomcat.apach[...]
Apache Software Foundation
2017-06-27
[2]
웹사이트
What's New in Java Servlet API 2.2?
https://www.infoworl[...]
JavaWorld
2020-11-08
[3]
웹사이트
Web Application Lifecycle
https://docs.oracle.[...]
Oracle
[4]
웹사이트
Deploying on a running Tomcat server
https://tomcat.apach[...]
Apache Software Foundation
[5]
웹인용
What's New in Java Servlet API 2.2?
http://www.oracle.co[...]
JavaWorld(Reprinted by Oracle Corporation)
2014-08-26
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com